import fpGrowth

'''
# 测试FP树中节点的类定义
# 创建树中的一个单节点
print ("创建树中的一个单节点people")
rootNode = fpGrowth.treeNode('people',1,None)
rootNode.disp()
print ("")

# 增加一个子节点
print ("为people增加一个子节点head")
rootNode.children['head'] = fpGrowth.treeNode('head',1,None)
rootNode.disp()
print ("")
# 再增加一个子节点
print ("为people再增加一个子节点body")
rootNode.children['body'] = fpGrowth.treeNode('body',1,None)
rootNode.disp()
print ("")

# 为子节点增加一个子节点
print ("为head增加一个子节点eye")
rootNode.children['head'].children['eye'] = fpGrowth.treeNode('eye',2,None)
rootNode.disp()
print ("")
print ("为body增加一个子节点chest")
rootNode.children['body'].children['chest'] = fpGrowth.treeNode('chest',1,None)
rootNode.disp()
print ("")
'''

# 构造一个简单数据集
print ("step-0：构造一个简单数据集")
simpDat = fpGrowth.loadSimpDat()
print ("simpDat:",simpDat)
print ("")

# 将数据集包装为frozenset型的数据
print ("step-1：将数据集包装为frozenset型的数据")
initSet = fpGrowth.createInitSet(simpDat)
print ("initSet:",initSet)
print ("")

# 创建FP树
print ("step-2：创建FP树")
myFPtree,myHeaderTab = fpGrowth.createTree(initSet,3)
print ("myHeaderTab:",myHeaderTab)
myFPtree.disp()
print ("")

# 发现以给定元素项结尾的所有路径的函数
#fpGrowth.findPrefixPath('r',myHeaderTab['r'][1])

# 递归查找频繁项集的mineTree函数
print ("step-3：递归查找所有满足条件的频繁项集，并展示其条件树")
freqItems = []  # 建立一个空列表来存储所有的频繁项集
fpGrowth.mineTree(myFPtree, myHeaderTab, 3, set([]), freqItems) # 显示所有的条件树
